The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, the approaches described in this section may not be prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.
Generally speaking, print drivers are processes that process print data generated by an application program and convert the print data into a format supported by a printing device that is intended to process the print data. For example, a user creates an electronic document using a word processing application. The user then uses a print option in the application program to request that the electronic document be printed to a particular printing device. The application program generates and provides print data to a print driver installed on the user's client device. Sometimes this involves the use of an intermediary process referred to as a spooler that saves the print data locally. The print driver processes the print data and generates processed print data that is in a format supported by the particular printing device. For example, the print driver may process the print data and generate processed print data that conforms to the postscript format. The generation of the processed print data typically involves the use of a rendering module or functionality that translates the print data into the format required by the particular print device. The print driver then transmits the processed print data to the particular printing device. The particular printing device processes the processed print data and generates a printed version of the electronic document.
Print drivers may reside on client devices, server devices, such as print servers, or even on printing devices. Furthermore, print drivers may be integrated into application programs, but are more typically implemented as separate processes to simplify implementing newer versions.
One of the drawbacks of conventional print drivers is that a significant amount of computational resources and time may be required by a rendering module to process the print data generated by an application program. This is particularly true for print data that contains a large amount of graphics. Since conventional print drivers do not maintain processed print data after it has been transmitted to a printing device, print drivers have to process print data every time it is received, even if the print driver has previously processed the same print data. Thus, when a user re-prints a document, the print driver must completely re-process the print data generated by the application program and again incur the computational expenses and time required to process the print data. Furthermore, if the original document is no longer available, the processed print data cannot be retrieved by the print driver.